﻿Module Module1

    ' definizione di una proprietà in modo esteso:
    Private _unaProprieta As String
    Public Property unaProprieta() As String
        Get
            Return _unaProprieta
        End Get
        Set(ByVal Value As String)
            _unaProprieta = Value
        End Set
    End Property

    ' proprietà autoimplementata:
    Public Property unAltraProprieta As String

    ' proprietà a sola lettura non può essere autoimplementata:
    Private _solaLettura As Integer
    Public ReadOnly Property contatore() As Integer
        Get
            Return _solaLettura + 1
        End Get
    End Property

    ' proprietà a sola scrittura non può essere autoimplementata:
    Private _solaScrittura As Integer
    Public WriteOnly Property valoreMassimo() As Integer
        Set(ByVal value As Integer)
            _solaScrittura = value
        End Set
    End Property

    ' -------------------------------------------------
    ' NOTA:
    ' overriding di proprietà in classi derivate
    ' vedere classi Proprieta.vb e ProprietaDerivata.vb
    ' in questo stesso progetto
    ' -------------------------------------------------


    ' definizione automatica di proprietà
    ' (con "invio" dopo Get)
    Public Property nuova As String
        Get

        End Get
        Set(ByVal value As String)

        End Set
    End Property


    ' code snippet:
    Private newPropertyValue As Integer
    Public Property NewProperty() As Integer
        Get
            Return newPropertyValue
        End Get
        Set(ByVal value As Integer)
            newPropertyValue = value
        End Set
    End Property


    Sub Main()

    End Sub
End Module
